﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ServiceSATT;
using ApplicationContext;
namespace UI_SATT
{
    public partial class FrmListaArbitros : Form, IListadoFederacion,IListadoClub,IListadoArbitros
    {
        public FrmListaArbitros()
        {
            InitializeComponent();
        }

        string ImplementaClubes = "ClubService";
        string ImplementaFederacion = "FederacionService";
        string ImplementaArbitro = "ArbitroService";
        IClubService ClubServicio;
        IListadoArbitroService ArbitrosService;
        string[][] Lista;
        private void FrmListaArbitros_Load(object sender, EventArgs e)
        {
            IFederacionService Federacion = (IFederacionService)AppContext.Instance.GetObject(ImplementaFederacion);
            Federacion.ListaFederacion(this);
            ClubServicio = (IClubService)AppContext.Instance.GetObject(ImplementaClubes);
        }

        #region IListadoFederacion Members

        public string[][] Listado
        {
            set
            {
                if (CboFederacion.Items.Count > 0)
                    CboFederacion.Items.Clear();
                foreach (string[] Objeto in value)
                {
                    CboFederacion.Items.Add(Objeto[0]);
                }
                CboFederacion.SelectedIndex = -1;
            }
        }

        #endregion

        #region IListadoClub Members

        public string NombreFederacion
        {
            get { return CboFederacion.SelectedItem.ToString(); }
        }

        public string[][] LstClub
        {
            set
            {
                if (CboClub.Items.Count > 0)
                    CboClub.Items.Clear();
                foreach (string[] Objeto in value)
                {
                    CboClub.Items.Add(Objeto[0]);
                }
                CboClub.SelectedIndex = -1;
            }
        }

        #endregion

        #region IListadoArbitros Members

        public string Club
        {
            get {return CboClub.SelectedItem.ToString(); }
        }

        public string[][] LstArbitros
        {
            set
            {
                Lista = value;
                if (DgvArbitrosDisponibles.ColumnCount == 0)
                {
                    DgvArbitrosDisponibles.Columns.Add("DNI", "DNI");
                    DgvArbitrosDisponibles.Columns.Add("Nombre", "Nombre");
                }
                if (DgvArbitrosDisponibles.Rows.Count > 0)
                {
                    DgvArbitrosDisponibles.Rows.Clear();
                }
                foreach (string[] Objeto in value)
                {
                    DgvArbitrosDisponibles.Rows.Add(Objeto);
                }
            }
        }

        #endregion

        private void CboFederacion_SelectionChangeCommitted(object sender, EventArgs e)
        {
            ClubServicio.ListaClub(this);
        }

        private void CboClub_SelectionChangeCommitted(object sender, EventArgs e)
        {
            ArbitrosService = (IListadoArbitroService)AppContext.Instance.GetObject(ImplementaArbitro);
            ArbitrosService.Listar(this);
        }

        private void BtnModificar_Click(object sender, EventArgs e)
        {
            if (CboFederacion.SelectedIndex < 0)
            {
                MessageBox.Show("Debe Seleccionar Una Federacion");
            }
            else
            {
                if (CboClub.SelectedIndex < 0)
                { MessageBox.Show("Debe Seleccionar Un Club"); }
                else
                {
                    Form NuevoArbitro = new FrmNuevoArbitro(this.Club);
                    if (NuevoArbitro.ShowDialog() == DialogResult.OK)
                    {
                        ArbitrosService.Listar(this);
                    }
                }
            }
        }

        private void BtnCancelar_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.Cancel;
            this.Close();
        }

        private void BtnAsignar_Click(object sender, EventArgs e)
        {
            if (DgvArbitrosDisponibles.SelectedRows.Count == 1)
            {
                FrmCierreTorneos.DatosArbitro[0] = DgvArbitrosDisponibles.SelectedRows[0].Cells[0].Value.ToString();
                FrmCierreTorneos.DatosArbitro[1] = DgvArbitrosDisponibles.SelectedRows[0].Cells[1].Value.ToString();
                this.DialogResult = DialogResult.OK;
            }
            else
                MessageBox.Show("Seleccione un Árbitro de la Lista para continuar.");
        }


    }
}
